rm(list=ls(all=TRUE))
load("~/Post-doc/Data/Total Merged Data File (July 11 2022).RData")
Data for mean velocity, angular velocity, turn and heading angles each will be analyzed by a mixed model ANCOVA with chemical concentration, and light as fixed (treatment) effects, flow velocity as the co-variate and replicate as a random (blocking affect) with individual paths as the unit of analysis.
```r
```r
library(WRS2)
Error in is.nan(CC.TotalData) :
default method not implemented for type 'list'
```r
legend(\topright\, # Add legend to density
legend = c(\Flow rate 0\, \Flow rate 0.6\),#, \Flow rate 3\, \Flow rate 5.9\, \Flow rate 8.9\),
col = c(\blue\, \light blue\),#, \yellow\, \orange\, \red\),
lty = 1)
<!-- rnb-source-end -->
<!-- rnb-output-begin eyJkYXRhIjoiRXJyb3IgaW4gc3Ryd2lkdGgobGVnZW5kLCB1bml0cyA9IFxcdXNlclxcLCBjZXggPSBjZXgsIGZvbnQgPSB0ZXh0LmZvbnQpIDogXG4gIHBsb3QubmV3IGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0XG4ifQ== -->
Error in strwidth(legend, units = , cex = cex, font = text.font) : plot.new has not been called yet
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
#################################################################################
Kernel Density Plots
##################################################################################
Turn Angles first...
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucm0oa2QxLCBrZDIsIGtkMywga2Q0LCBrZDUsIGtkNiwga2Q3LCBrZDgpXG5cbiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFR1cm4gQW5nbGVzXG5wYXIobWFyPSBjKDQsNCwyLDEpKVxucGFyKG1mcm93PWMoMiwyKSlcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xubGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpXG5gYGAifQ== -->
```r
rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8)
### Kernel density plots ################### Turn Angles
par(mar= c(4,4,2,1))
par(mfrow=c(2,2))
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(l1$turn.angle[l1$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Flow Rate, (all data no light var), Lights On")
kd2 <- density(l1$turn.angle[l1$Flow.rate=="0.6"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(l1$turn.angle[l1$Flow.rate=="3"])
lines(kd3, col='yellow', lwd=2)
kd4 <- density(l1$turn.angle[l1$Flow.rate=="5.9"])
lines(kd4, col='orange', lwd=2)
kd5 <- density(l1$turn.angle[l1$Flow.rate=="8.9"])
lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
################################ Chlorophyll ########################
levels(CC.TotalData$Chlorophyll)
[1] "0" "4.3" "4.6" "5.5" "6.1" "7.6" "13.5" "19"
kd1 <- density(l1$turn.angle[l1$Chlorophyll=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Chlorophyll, Lights On")
kd2 <- density(l1$turn.angle[l1$Chlorophyll=="4.3"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(l1$turn.angle[l1$Chlorophyll=="4.6"])
lines(kd3, col='yellow', lwd=2)
kd8 <- density(l1$turn.angle[l1$Chlorophyll=="5.5"])
lines(kd8, col='orange', lwd=2)
kd4 <- density(l1$turn.angle[l1$Chlorophyll=="6.1"])
lines(kd4, col='red', lwd=2)
kd5 <- density(l1$turn.angle[l1$Chlorophyll=="7.6"])
lines(kd5, col='dark red', lwd=2)
kd6 <- density(l1$turn.angle[l1$Chlorophyll=="13.5"])
lines(kd6, col='purple', lwd=2)
kd7 <- density(l1$turn.angle[l1$Chlorophyll=="19"])
lines(kd7, col='black', lwd=2)
legend("topright", # Add legend to density
legend = c("Chlorophyll 0", "Chlorophyll 4.3", "Chlorophyll 4.6", "Chlorophyll 5.5", "Chlorophyll 6.1",
"Chlorophyll 7.6", "Chlorophyll 13.5", 'Chlorophyll 19'),
col = c("blue", "light blue", "yellow", "orange", "red", "dark red", "purple", "black"),
lty = 1)
################################ Guano ########################
levels(CC.TotalData$Guano)
[1] "Absent" "Present"
kd1 <- density(l1$turn.angle[l1$Guano=="Present"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Guano, Lights On")
kd2 <- density(l1$turn.angle[l1$Guano=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Guano Present", "Guano Absent"),
col = c("blue", "red"),
lty = 1)
################################ Light ########################
levels(CC.TotalData$Light)
[1] "Absent" "Present"
kd1 <- density(l1$turn.angle[l1$Light=="Present"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Light")
kd2 <- density(l0$turn.angle[l0$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)

Now looking at velocity in relation to flow instead….
### Kernel density plots ################### Swimming velocity
par(mar= c(4,4,2,1))
par(mfrow=c(2,2))
#range(CC.TotalData$vel.flow)
#plot(CC.TotalData$vel.flow)
CC.TotalData$log.vel.flow <- log10(CC.TotalData$vel.flow)
Warning: NaNs produced
#str(CC.TotalData)
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(log10(l1$vel.flow[l1$Flow.rate=="0"]))
Warning in density(log10(l1$vel.flow[l1$Flow.rate == "0"])) :
NaNs produced
Error in density.default(log10(l1$vel.flow[l1$Flow.rate == "0"])) :
'x' contains missing values
Now for headings…..
rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8)
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd2' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd3' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd4' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd5' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd7' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd8' not found
Now for pitch….
### Kernel density plots ################### Pitch
par(mar= c(4,4,2,1))
par(mfrow=c(2,2))
CC.TotalData$pitch.perfect <- CC.TotalData$pitch/(2*pi)*360
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="0"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Flow Rate")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="0.6"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="3"])
lines(kd3, col='yellow', lwd=2)
kd4 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="5.9"])
lines(kd4, col='orange', lwd=2)
kd5 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="8.9"])
lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
################################ Chlorophyll ########################
levels(CC.TotalData$Chlorophyll)
[1] "0" "4.3" "4.6" "5.5" "6.1" "7.6" "13.5" "19"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="0"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Chlorophyll")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="4.3"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="4.6"])
lines(kd3, col='yellow', lwd=2)
kd8 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="5.5"])
lines(kd8, col='orange', lwd=2)
kd4 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="6.1"])
lines(kd4, col='red', lwd=2)
kd5 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="7.6"])
lines(kd5, col='dark red', lwd=2)
kd6 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="13.5"])
lines(kd6, col='purple', lwd=2)
kd7 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="19"])
lines(kd7, col='black', lwd=2)
legend("topright", # Add legend to density
legend = c("Chlorophyll 0", "Chlorophyll 4.3", "Chlorophyll 4.6", "Chlorophyll 5.5", "Chlorophyll 6.1", "Chlorophyll 7.6", "Chlorophyll 13.5", 'Chlorophyll 19'),
col = c("blue", "light blue", "yellow", "orange", "red", "dark red", "purple", "black"),
lty = 1)
################################ Guano ########################
levels(CC.TotalData$Guano)
[1] "Absent" "Present"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Guano=="Present"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Guano")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Guano=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Guano Present", "Guano Absent"),
col = c("blue", "red"),
lty = 1)
################################ Light ########################
levels(CC.TotalData$Light)
[1] "Absent" "Present"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Light=="Present"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Light")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
For each level of Flow
For each level of Chlorophyll
### Kernel density plots ################### Turn Angles
par(mar= c(4,4,2,1))
par(mfrow=c(3,3))
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 0")
kd2 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="0.6"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="3"])
lines(kd3, col='yellow', lwd=2)
kd4 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="5.9"])
lines(kd4, col='orange', lwd=2)
kd5 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="8.9"])
lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
##kd1 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="0"])
##plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.3")
kd2 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="0.6"])
plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.3")
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.6")
kd2 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="0.6"])
##plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.6")
lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 5.5")
##kd2 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="0.6"])
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
##kd1 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="0"])
##plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 6")
kd2 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="0.6"])
plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 6")
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 7")
##kd2 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="0.6"])
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
##kd1 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="0"])
##plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 13")
kd2 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="0.6"])
plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 13")
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 19")
##kd2 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="0.6"])
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
###########################################################################
############################# Light ######################################
###########################################################################
par(mar= c(4,4,2,1))
par(mfrow=c(3,3))
kd1 <- density(ChlA0$turn.angle[ChlA0$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 0")
kd2 <- density(ChlA0$turn.angle[ChlA0$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA4.3$turn.angle[ChlA4.3$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 4.3")
##kd2 <- density(ChlA4.3$turn.angle[ChlA4.3$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA4.6$turn.angle[ChlA4.6$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 4.6")
##kd2 <- density(ChlA4.6$turn.angle[ChlA4.6$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA5.5$turn.angle[ChlA5.5$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 5.5")
##kd2 <- density(ChlA5.5$turn.angle[ChlA5.5$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA6$turn.angle[ChlA6$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 6")
##kd2 <- density(ChlA6$turn.angle[ChlA6$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA7$turn.angle[ChlA7$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 7")
kd2 <- density(ChlA7$turn.angle[ChlA7$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA13$turn.angle[ChlA13$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 13")
##kd2 <- density(ChlA13$turn.angle[ChlA13$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA19$turn.angle[ChlA19$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 19")
kd2 <- density(ChlA19$turn.angle[ChlA19$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
For each level of Flow (now for velocity)
### Kernel density plots ################### Velocity
par(mar= c(4,4,2,1))
par(mfrow=c(3,2))
################################ Chlorophyll ########################
kd1 <- density(log10(f0$vel.flow[f0$Chlorophyll=="0"]))
Warning in density(log10(f0$vel.flow[f0$Chlorophyll == "0"])) :
NaNs produced
Error in density.default(log10(f0$vel.flow[f0$Chlorophyll == "0"])) :
'x' contains missing values
For each level of Chlorophyll (velocity)
### Kernel density plots ################### velocity
par(mar= c(4,4,2,1))
par(mfrow=c(3,3))
################################ Flow Rate ########################
kd1 <- density(log10(ChlA0$vel.flow[ChlA0$Flow.rate=="0"]))
Warning in density(log10(ChlA0$vel.flow[ChlA0$Flow.rate == "0"])) :
NaNs produced
Error in density.default(log10(ChlA0$vel.flow[ChlA0$Flow.rate == "0"])) :
'x' contains missing values
Now for each level of Flow (for headings)
median(f0$heading.pi[f0$Chlorophyll=="0"])
[1] 0
Now for each level of Chlorophyll (for headings)

LS0tDQp0aXRsZTogIm5vdGVib29rMDkgLSBTdGF0aXN0aWNhbCBBbmFseXNpcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KYGBge3J9DQpybShsaXN0PWxzKGFsbD1UUlVFKSkNCmxvYWQoIn4vUG9zdC1kb2MvRGF0YS9Ub3RhbCBNZXJnZWQgRGF0YSBGaWxlIChKdWx5IDExIDIwMjIpLlJEYXRhIikNCmBgYA0KDQpEYXRhIGZvciBtZWFuIHZlbG9jaXR5LCBhbmd1bGFyIHZlbG9jaXR5LCB0dXJuIGFuZCBoZWFkaW5nIGFuZ2xlcyBlYWNoIHdpbGwgYmUgYW5hbHl6ZWQgYnkgYSBtaXhlZCBtb2RlbCBBTkNPVkEgd2l0aCBjaGVtaWNhbCBjb25jZW50cmF0aW9uLCBhbmQgbGlnaHQgYXMgZml4ZWQgKHRyZWF0bWVudCkgZWZmZWN0cywgZmxvdyB2ZWxvY2l0eSBhcyB0aGUgY28tdmFyaWF0ZSBhbmQgcmVwbGljYXRlIGFzIGEgcmFuZG9tIChibG9ja2luZyBhZmZlY3QpIHdpdGggaW5kaXZpZHVhbCBwYXRocyBhcyB0aGUgdW5pdCBvZiBhbmFseXNpcy4NCg0KYGBge3J9DQoNCiMjVG8gcnVuIEFOQ09WQSBpbiBSIGxvYWQgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoNCmxpYnJhcnkoY2FyKQ0KbGlicmFyeShjb21wdXRlLmVzKQ0KbGlicmFyeShlZmZlY3RzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShtdWx0Y29tcCkNCmxpYnJhcnkocGFzdGVjcykNCmxpYnJhcnkoV1JTMikNCg0KIyNJZiB5b3UgYXJlIHVzaW5nIGxtIG9yIGFvdiBtYWtlIHN1cmUgdGhhdCB5b3Ugc2V0IHRoZSBjb250cmFzdHMgdXNpbmcgdGhlICJjb250cmFzdHMiIGZ1bmN0aW9uIGJlZm9yZSBkb2luZyBlaXRoZXIgYW92IG9yIGxtLiBSIHVzZXMgbm9uLW9ydGhvZ29uYWwgY29udHJhc3RzIGJ5IGRlZmF1bHQgd2hpY2ggY2FuIG1lc3MgZXZlcnl0aGluZyB1cCBpbiBhbiBBTkNPVkEuIElmIHlvdSB3YW50IHRvIHNldCBvcnRob2dvbmFsIGNvbnRyYXN0cyB1c2U6DQoNCmNvbnRyYXN0cyhkYXRhbmFtZSRmYWN0b3J2YXJpYWJsZSk9Y29udHIucG9seSgpIyBvZiBsZXZlbHMsIGkuZS4gMykgIyNleGFtcGxlDQpjb250cmFzdHMoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsKT1jb250ci5wb2x5KDcpDQojI3RoZW4gcnVuIHlvdXIgbW9kZWwgYXMNCg0KbW9kZWwuMT1hb3YoZHZ+Y292YXJpYXRlK2ZhY3RvcnZhcmlhYmxlLCBkYXRhPWRhdGFuYW1lKSAjIyBleGFtcGxlDQptb2QxPWFvdih2ZWwuZmxvd35GbG93LnJhdGUrQ2hsb3JvcGh5bGwsIGRhdGE9Q0MuVG90YWxEYXRhKQ0KIyNUbyB2aWV3IHRoZSBtb2RlbCB1c2U6DQoNCkFub3ZhKG1vZGVsLjEsIHR5cGU9IklJSSIpICMjIGV4YW1wbGUNCkFub3ZhKG1vZDEsIHR5cGU9IklJSSIpDQojI01ha2Ugc3VyZSB5b3UgdXNlIGNhcGl0YWwgIkEiIEFub3ZhIGhlcmUgYW5kIG5vdCBhbm92YS4gVGhpcyB3aWxsIGdpdmUgcmVzdWx0cyB1c2luZyB0eXBlIElJSSBTUy4NCg0Kc3VtbWFyeS5sbShtb2RlbC4xKSAjI3dpbGwgZ2l2ZSBhbm90aGVyIHN1bW1hcnkgYW5kIGluY2x1ZGVzIHRoZSBSLXNxLiBvdXRwdXQuIEV4YW1wbGUNCnN1bW1hcnkubG0obW9kMSkNCg0KcG9zdGg9Z2xodChtb2RlbC4xLCBsaW5mY3Q9bWNwKGZhY3RvcnZhcmlhYmxlPSJUdWtleSIpKSAgIyNnaXZlcyB0aGUgcG9zdC1ob2MgVHVrZXkgYW5hbHlzaXMuIEV4YW1wbGUNCnBvc3RoPWdsaHQobW9kMSwgbGluZmN0PW1jcChDaGxvcm9waHlsbD0iVHVrZXkiKSkNCnN1bW1hcnkocG9zdGgpICMjc2hvd3MgdGhlIG91dHB1dCBpbiBhIG5pY2UgZm9ybWF0Lg0KDQojI0lmIHlvdSB3YW50IHRvIHRlc3QgZm9yIGhvbW9nZW5laXR5IG9mIHJlZ3Jlc3Npb24gc2xvcGVzIHlvdSBjYW4gYWxzbyBpbmNsdWRlIGFuIGludGVyYWN0aW9uIHRlcm0gZm9yIHRoZSBJViBhbmQgY292YXJpYXRlLiBUaGF0IHdvdWxkIGJlOg0KDQptb2RlbD1hb3YoZHZ+Y292YXJpYXRlK0lWK2NvdmFyaWF0ZTpJViwgZGF0YT1kYXRhbmFtZSkgIyMgZXhhbXBsZQ0KDQptb2QyPWFvdih2ZWwuZmxvd35GbG93LnJhdGUrQ2hsb3JvcGh5bGwrRmxvdy5yYXRlOkNobG9yb3BoeWxsLCBkYXRhPUNDLlRvdGFsRGF0YSkgIyMgbm90IHJpZ2h0Pw0KIyNJZiB0aGUgaW50ZXJhY3Rpb24gdGVybSBpcyBzaWduaWZpY2FudCB0aGVuIHlvdSBkbyBub3QgaGF2ZSBob21vZ2VuZWl0eS4NCg0KDQpgYGANCmBgYHtyfQ0KIyNMb29raW5nIGF0IG90aGVyIHN0YXRzIHdlIGNvdWxkIHJ1bg0KbGlicmFyeShubG1lKQ0KbGlicmFyeShsbWU0KQ0KbGlicmFyeShlZmZlY3RzKQ0KDQoNCiMjIGV4YW1wbGUNCmQgPC0gZGF0YS5mcmFtZSgNCiAgICBZID0gcm5vcm0oNDgpLCAgIyMjIGUuZy4gdmVsb2NpdHkNCiAgICBzdWJqZWN0ID0gZmFjdG9yKHJlcCgxOjEyLCA0KSksICAjIyMgZS5nLiBEX1ZfVA0KICAgIEEgPSBmYWN0b3IocmVwKDE6MiwgZWFjaD0yNCkpLCAgICMjIyMgZS5nLiBMaWdodA0KICAgIEIgPSBmYWN0b3IocmVwKHJlcCgxOjIsIGVhY2g9MTIpLCAyKSkpICAgIyMjIGUuZy4gRmxvdy5yYXRlDQoNCnN1bW1hcnkoYW92KFkgfiBBKkIgKyBFcnJvcihzdWJqZWN0LyhBKkIpKSwgZGF0YT1kKSkgICMgU3RhbmRhcmQgcmVwZWF0ZWQgbWVhc3VyZXMgQU5PVkENCg0KbW9kZTEgPC0gbG1lKFl+QSpCLCByYW5kb20gPSB+MXxzdWJqZWN0LCBkYXRhPWQpICAjIyBubG1lDQoNCmxtZXIoWSB+IEEqQiArICgxfHN1YmplY3QpICsgKDF8QTpzdWJqZWN0KSArICgxfEI6c3ViamVjdCksIGRhdGE9ZCkgICMjIyBsbWU0DQoNCg0KDQojIyMjIyMjIyMgICAgb3VyIGRhdGEgdXNpbmcgbmxtZSBwYWNrYWdlICAgICAjIyMjIyMjIyMNCg0KbW9kZTEgPC0gbG1lKGhlYWRpbmd+dmVsLmZsb3cqTGlnaHQsIHJhbmRvbT0gfjF8RF9WX1QsIGRhdGE9Q0MuVG90YWxEYXRhKQ0KDQptb2RlMiA8LSBsbWUoaGVhZGluZ352ZWwuZmxvdywgcmFuZG9tPSB+MXxEX1ZfVCwgZGF0YT1DQy5Ub3RhbERhdGEpDQoNCmFub3ZhKG1vZGUxLCBtb2RlMikgI2lmIGl0IHNob3dzIG9ubHkgbWlub3IgaW1wcm92ZW1lbnQsIG5vIG5lZWQgdG8gaW5jbHVkZSBtaXNzaW5nIGZhY3Rvcg0KDQphbm92YShtb2RlMSkNCg0KDQojIyMjIyMjIyMgICAgb3VyIGRhdGEgdXNpbmcgbDRtZSBwYWNrYWdlICAgICAjIyMjIyMjIyMNCg0KbW9kZWwxIDwtIGxtZXIodmVsLmZsb3cgfiBGbG93LnJhdGUqQ2hsb3JvcGh5bGwgKyAoMXxEX1ZfVCkgKyAoMXxGbG93LnJhdGU6RF9WX1QpICsgKDF8Q2hsb3JvcGh5bGw6RF9WX1QpLCBkYXRhPUNDLlRvdGFsRGF0YSkgICMjIw0KDQptb2RlbDIgPC0gbG1lcih2ZWwuZmxvdyB+IEZsb3cucmF0ZSArICgxfERfVl9UKSArICgxfEZsb3cucmF0ZTpEX1ZfVCksIGRhdGE9Q0MuVG90YWxEYXRhKQ0KDQphbm92YShtb2RlbDEsIG1vZGVsMikgI2lmIGl0IHNob3dzIG9ubHkgbWlub3IgaW1wcm92ZW1lbnQsIG5vIG5lZWQgdG8gaW5jbHVkZSBtaXNzaW5nIGZhY3Rvcg0KDQphbm92YShtb2RlbDEpDQoNCiMjIyMjIyMjIyBwbG90dGluZyBlZmZlY3Qgb2YgdGhlIG1vZGVscyAgICAjIyMjIyMjIyMjDQpwbG90KGVmZmVjdCgidmVsLmZsb3cqTGlnaHQiLHNlPVRSVUUsIGNvbmZpZGVuY2UubGV2ZWw9Ljk1LCBtb2RlMSkpDQoNCg0KIyMjIyMjIGludGVyYWN0aW9uIHBsb3Qgd2l0aCBMYXR0aWNlIGV4dHJhICMjIyMjIyMjIw0KbGlicmFyeShsYXR0aWNlRXh0cmEpDQp4eXBsb3QoQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGV+Q0MuVG90YWxEYXRhJEZsb3cucmF0ZXxDQy5Ub3RhbERhdGEkTGlnaHQqQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsLCAgbWFpbj0iU2NhdHRlcnBsb3RzIGJ5IExpZ2h0IGFuZCBDaGxvcm9waHlsbCIsIA0KICAgeWxhYj0iVHVybiBBbmdsZSAoZGVncmVlcykiLCB4bGFiPSJGbG93IFJhdGUgKGNtL3MpIikgKw0KICAgbGF5ZXIocGFuZWwuYWJsaW5lcShsbSh5IH4geCksIHIuc3EgPSBUUlVFLA0KICAgYXQgPSAwLjc1LCBhZGo9MTo1KSwgc3R5bGUgPSA0KQ0KDQoNCiMjIyMjIyMjIyMjIyMjIGludGVyYWN0aW9uIHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppbnRlcmFjdGlvbi5wbG90KENDLlRvdGFsRGF0YSRGbG93LnJhdGUsICMjIHggYXhpcw0KICAgICAgICAgICAgICAgICBDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGwsICMjIGZhY3RvciBmb3IgbGluZXMNCiAgICAgICAgICAgICAgICAgbG9nMTAoQ0MuVG90YWxEYXRhJHZlbC5mbG93KSwgICMjIHkgYXhpcw0KICAgICAgICAgICAgICAgICBmdW4gPSBtZWFuLA0KICAgICAgICAgICAgICAgICB0eXBlID0gYygiYiIpLCBsZWdlbmQgPSBUUlVFLA0KICAgICAgICAgICAgICAgICB0cmFjZS5sYWJlbCA9ICJDaGxvcm9waHlsbCIsDQogICAgICAgICAgICAgICAgIHlsaW0gPSBjKC0xLDEwKSwNCiAgICAgICAgICAgICAgICAgbWFpbiA9ICJMaWdodHMgT24iLA0KICAgICAgICAgICAgICAgICB4bGFiID0gIkZsb3cgcmF0ZSAoY20vcykiLA0KICAgICAgICAgICAgICAgICB5bGFiID0gIlZlbG9jaXR5IChjbS9zKSIsDQogICAgICAgICAgICAgICAgIGNvbCA9IENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCwgcGNoID0gYygxOjkpLA0KICAgICAgICAgICAgICAgICBheGVzID0gVFJVRSkNCiNsaWJyYXJ5KHRpZHlyKQ0KI2xpYnJhcnkoZHBseXIpDQojQ0MuVG90YWxEYXRhICU+JSBtdXRhdGVfYWxsKH5yZXBsYWNlKC4sIGlzLm5hbiguKSwgMCkpDQpDQy5Ub3RhbERhdGFbaXMubmFuKENDLlRvdGFsRGF0YSldIDwtIDANCnJhbmdlKENDLlRvdGFsRGF0YSRsb2cudmVsLmZsb3cpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCnJtKG1vZGUxKQ0KDQpybShtb2RlMikNCg0KDQptb2QxIDwtIGxtKHZlbC5mbG93fkZsb3cucmF0ZSpDaGxvcm9waHlsbCwgZGF0YSA9IENDLlRvdGFsRGF0YSkNCnN1bW1hcnkobW9kMSkNCg0KYGBgDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KICAgICAgICAgICAgICAgICBLZXJuZWwgRGVuc2l0eSBQbG90cw0KDQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNClR1cm4gQW5nbGVzIGZpcnN0Li4uDQoNCmBgYHtyfQ0Kcm0oa2QxLCBrZDIsIGtkMywga2Q0LCBrZDUsIGtkNiwga2Q3LCBrZDgpDQoNCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFR1cm4gQW5nbGVzDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMiwyKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpDQoNCmtkMSA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkRmxvdy5yYXRlPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMzApLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBGbG93IFJhdGUsIChhbGwgZGF0YSBubyBsaWdodCB2YXIpLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRGbG93LnJhdGU9PSIzIl0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkRmxvdy5yYXRlPT0iNS45Il0pDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMwKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgQ2hsb3JvcGh5bGwsIExpZ2h0cyBPbiIpDQoNCmtkMiA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q4IDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRDaGxvcm9waHlsbD09IjUuNSJdKQ0KbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJENobG9yb3BoeWxsPT0iNi4xIl0pDQpsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCmxpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQprZDYgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJENobG9yb3BoeWxsPT0iMTkiXSkNCmxpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkR3Vhbm89PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzMCksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJEd1YW5vPT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMaWdodCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkTGlnaHQpDQoNCmtkMSA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzMCksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0IikNCg0Ka2QyIDwtIGRlbnNpdHkobDAkdHVybi5hbmdsZVtsMCRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KYGBgDQoNCg0KDQoNCg0KTm93IGxvb2tpbmcgYXQgdmVsb2NpdHkgaW4gcmVsYXRpb24gdG8gZmxvdyBpbnN0ZWFkLi4uLg0KDQoNCg0KYGBge3J9DQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyBTd2ltbWluZyB2ZWxvY2l0eQ0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDIsMikpDQojcmFuZ2UoQ0MuVG90YWxEYXRhJHZlbC5mbG93KQ0KI3Bsb3QoQ0MuVG90YWxEYXRhJHZlbC5mbG93KQ0KIyNDQy5Ub3RhbERhdGEkbG9nLnZlbC5mbG93IDwtIGxvZzEwKENDLlRvdGFsRGF0YSR2ZWwuZmxvdykNCiNzdHIoQ0MuVG90YWxEYXRhKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJEZsb3cucmF0ZT09IjAiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTEwLDkwKSwgeWxpbSA9IGMoMCwgMC4wMzUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAoaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgRmxvdyBSYXRlLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRGbG93LnJhdGU9PSIwLjYiXSkpDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRGbG93LnJhdGU9PSIzIl0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRGbG93LnJhdGU9PSI1LjkiXSkpDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJEZsb3cucmF0ZT09IjguOSJdKSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ2hsb3JvcGh5bGwgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsKQ0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRDaGxvcm9waHlsbD09IjAiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTkwLDkwKSwgeWxpbSA9IGMoMCwgMC4wMzUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAoaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgQ2hsb3JvcGh5bGwsIExpZ2h0cyBPbiIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJENobG9yb3BoeWxsPT0iNC4zIl0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkQ2hsb3JvcGh5bGw9PSI0LjYiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkOCA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJENobG9yb3BoeWxsPT0iNS41Il0pKQ0KbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRDaGxvcm9waHlsbD09IjYuMSJdKSkNCmxpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkQ2hsb3JvcGh5bGw9PSI3LjYiXSkpDQpsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkQ2hsb3JvcGh5bGw9PSIxMy41Il0pKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRDaGxvcm9waHlsbD09IjE5Il0pKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEd1YW5vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRHdWFubykNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkR3Vhbm89PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDM1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEd1YW5vLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRHdWFubz09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIExpZ2h0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRMaWdodCkNCg0Ka2QxIDwtIGRlbnNpdHkobDEkbG9nLnZlbC5mbG93W2wxJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDM1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0IikNCg0Ka2QyIDwtIGRlbnNpdHkobDEkbG9nLnZlbC5mbG93W2wxJExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQpgYGANCg0KDQoNCg0KDQoNCg0KDQpOb3cgZm9yIGhlYWRpbmdzLi4uLi4NCg0KDQpgYGB7cn0NCiMjIGNvcGllZCBmcm9tIG5vdGVib29rMDAtbWVyZ2luZyBmaWxlcyBhbmQgYWRkaW5nIGNvbHVtbnMNCiMjQ0MuVG90YWxEYXRhJGhlYWRpbmcgPC0gYXRhbihDQy5Ub3RhbERhdGEkZHgvQ0MuVG90YWxEYXRhJGR5KQ0KIyMgdGhpcyBpcyBob3cgaXQgd2FzIGNhbGN1bGF0ZWQNCnJhbmdlKENDLlRvdGFsRGF0YSRoZWFkaW5nKSAgIyMgZ2l2ZXMgLTEuNTcgdG8gMS41Nw0KcmFuZ2UobDEkaGVhZGluZy5waVtsMSRGbG93LnJhdGU9PSIwIl0pICAjIyBnaXZlcyAtOTAgdG8gOTAgICh3aHkgbm90IC0xODAsIHRvIDE4MD8/KQ0KIyMgc2hvdWxkIGJlDQpDQy5Ub3RhbERhdGEkaGVhZGluZyA8LSBhdGFuMihDQy5Ub3RhbERhdGEkZHgsIENDLlRvdGFsRGF0YSRkeSkNCg0KbDEkaGVhZGluZy5waSA8LSBsMSRoZWFkaW5nLygyKnBpKSozNjANCnJhbmdlKENDLlRvdGFsRGF0YSRoZWFkaW5nKSAgIyMgZ2l2ZXMgLTMuMTQgdG8gMy4xNA0KcmFuZ2UobDEkaGVhZGluZy5waSkgICMjIGdpdmVzIC0xODAgdG8gMTgwICANCg0Kcm0oa2QxLCBrZDIsIGtkMywga2Q0LCBrZDUsIGtkNiwga2Q3LCBrZDgpDQoNCg0KIyMjIEtlcm5lbCBkZW5zaXR5IHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMgSGVhZGluZ3MNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygyLDIpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGbG93IFJhdGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0Ka2QxIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSRoZWFkaW5nLnBpW2wxJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRGbG93LnJhdGU9PSIzIl0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkRmxvdy5yYXRlPT0iNS45Il0pDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDE1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBDaGxvcm9waHlsbCwgTGlnaHRzIE9uIikNCg0Ka2QyIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjQuMyJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjQuNiJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDggPC0gZGVuc2l0eShsMSRoZWFkaW5nLnBpW2wxJENobG9yb3BoeWxsPT0iNS41Il0pDQpsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCmxpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjcuNiJdKQ0KbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCmtkNiA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQpsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCmtkNyA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkR3Vhbm89PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEd1YW5vLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSRoZWFkaW5nLnBpW2wxJEd1YW5vPT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMaWdodCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkTGlnaHQpDQoNCmtkMSA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgTGlnaHQiKQ0KDQprZDIgPC0gZGVuc2l0eShsMCRoZWFkaW5nLnBpW2wwJExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQpgYGANCg0KDQoNCg0KDQoNCg0KTm93IGZvciBwaXRjaC4uLi4NCg0KYGBge3J9DQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyBQaXRjaA0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDIsMikpDQoNCkNDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0IDwtIENDLlRvdGFsRGF0YSRwaXRjaC8oMipwaSkqMzYwDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGbG93IFJhdGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0Ka2QxIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtOTAsOTApLCB5bGltID0gYygwLCAwLjA2KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiUGl0Y2ggVnMgRmxvdyBSYXRlIikNCg0Ka2QyIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjMiXSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjUuOSJdKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDYpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJQaXRjaCBWcyBDaGxvcm9waHlsbCIpDQoNCmtkMiA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRDaGxvcm9waHlsbD09IjQuMyJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iNC42Il0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkOCA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRDaGxvcm9waHlsbD09IjUuNSJdKQ0KbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCmxpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iNy42Il0pDQpsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRHdWFubz09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtOTAsOTApLCB5bGltID0gYygwLCAwLjA2KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiUGl0Y2ggVnMgR3Vhbm8iKQ0KDQprZDIgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkR3Vhbm89PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIExpZ2h0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRMaWdodCkNCg0Ka2QxIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDYpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJQaXRjaCBWcyBMaWdodCIpDQoNCmtkMiA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KYGBgDQoNCg0KDQoNCg0KDQpGb3IgZWFjaCBsZXZlbCBvZiBGbG93DQoNCmBgYHtyfQ0KDQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyBUdXJuIEFuZ2xlcw0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMikpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDAiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGYwJHR1cm4uYW5nbGVbZjAkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjQuNiJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDggPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJENobG9yb3BoeWxsPT0iNS41Il0pDQpsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjYuMSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGYwJHR1cm4uYW5nbGVbZjAkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCmxpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGYwJHR1cm4uYW5nbGVbZjAkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0Ka2Q3IDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjE5Il0pDQpsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JENobG9yb3BoeWxsPT0iNC4zIl0pDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCmxpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCmtkNiA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjEzLjUiXSkNCmxpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSAzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iNC4zIl0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRDaGxvcm9waHlsbD09IjQuNiJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRDaGxvcm9waHlsbD09IjUuNSJdKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRDaGxvcm9waHlsbD09IjYuMSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRDaGxvcm9waHlsbD09IjcuNiJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRDaGxvcm9waHlsbD09IjE5Il0pDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobHJvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSA1LjkiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JENobG9yb3BoeWxsPT0iNC42Il0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JENobG9yb3BoeWxsPT0iNS41Il0pDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JENobG9yb3BoeWxsPT0iNi4xIl0pDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JENobG9yb3BoeWxsPT0iNy42Il0pDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JENobG9yb3BoeWxsPT0iMTkiXSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gOC45IikNCg0KIyNrZDIgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iNC4zIl0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoZjgkdHVybi5hbmdsZVtmOCRDaGxvcm9waHlsbD09IjQuNiJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkoZjgkdHVybi5hbmdsZVtmOCRDaGxvcm9waHlsbD09IjUuNSJdKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoZjgkdHVybi5hbmdsZVtmOCRDaGxvcm9waHlsbD09IjYuMSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoZjgkdHVybi5hbmdsZVtmOCRDaGxvcm9waHlsbD09IjcuNiJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkoZjgkdHVybi5hbmdsZVtmOCRDaGxvcm9waHlsbD09IjE5Il0pDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgR3Vhbm8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDIpKQ0KbGV2ZWxzKENDLlRvdGFsRGF0YSRHdWFubykNCg0Ka2QxIDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRHdWFubz09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBHdWFubywgRmxvdyA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJEd1YW5vPT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JEd1YW5vPT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JEd1YW5vPT0iQWJzZW50Il0pDQojI3Bsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBGbG93ID0gMC42IikNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJEd1YW5vPT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBGbG93ID0gMyIpDQoNCmtkMiA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkR3Vhbm89PSJBYnNlbnQiXSkNCiMjcGxvdChrZDIsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSAzIikNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCiMja2QxIDwtIGRlbnNpdHkoZjUkdHVybi5hbmdsZVtmNSRHdWFubz09IlByZXNlbnQiXSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBGbG93ID0gNS45IikNCg0Ka2QyIDwtIGRlbnNpdHkoZjUkdHVybi5hbmdsZVtmNSRHdWFubz09IkFic2VudCJdKQ0KcGxvdChrZDIsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSA1LjkiKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KIyNrZDEgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JEd1YW5vPT0iUHJlc2VudCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSA4LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JEd1YW5vPT0iQWJzZW50Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBHdWFubywgRmxvdyA9IDguOSIpDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMaWdodCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCmxldmVscyhDQy5Ub3RhbERhdGEkTGlnaHQpDQoNCmtkMSA8LSBkZW5zaXR5KGYwJHR1cm4uYW5nbGVbZjAkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIEZsb3cgPSAwIikNCg0Ka2QyIDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBMaWdodCwgRmxvdyA9IDAuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIEZsb3cgPSAzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBGbG93ID0gNS45IikNCg0KIyNrZDIgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBGbG93ID0gOC45IikNCg0Ka2QyIDwtIGRlbnNpdHkoZjgkdHVybi5hbmdsZVtmOCRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KRm9yIGVhY2ggbGV2ZWwgb2YgQ2hsb3JvcGh5bGwNCg0KYGBge3J9DQoNCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFR1cm4gQW5nbGVzDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywzKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpDQoNCmtkMSA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkRmxvdy5yYXRlPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGUgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBMCR0dXJuLmFuZ2xlW0NobEEwJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoQ2hsQTAkdHVybi5hbmdsZVtDaGxBMCRGbG93LnJhdGU9PSIzIl0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkRmxvdy5yYXRlPT0iNS45Il0pDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQoNCiMja2QxIDwtIGRlbnNpdHkoQ2hsQTQuMyR0dXJuLmFuZ2xlW0NobEE0LjMkRmxvdy5yYXRlPT0iMCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC4zIikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTQuMyR0dXJuLmFuZ2xlW0NobEE0LjMkRmxvdy5yYXRlPT0iMC42Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC4zIikNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNC4zJHR1cm4uYW5nbGVbQ2hsQTQuMyRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNC4zJHR1cm4uYW5nbGVbQ2hsQTQuMyRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE0LjMkdHVybi5hbmdsZVtDaGxBNC4zJEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNC42JHR1cm4uYW5nbGVbQ2hsQTQuNiRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTQuNiR0dXJuLmFuZ2xlW0NobEE0LjYkRmxvdy5yYXRlPT0iMC42Il0pDQojI3Bsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA0LjYiKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNC42JHR1cm4uYW5nbGVbQ2hsQTQuNiRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNC42JHR1cm4uYW5nbGVbQ2hsQTQuNiRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE0LjYkdHVybi5hbmdsZVtDaGxBNC42JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNS41IikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSIwLjYiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE1LjUkdHVybi5hbmdsZVtDaGxBNS41JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KENobEE2JHR1cm4uYW5nbGVbQ2hsQTYkRmxvdy5yYXRlPT0iMCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNiIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEE2JHR1cm4uYW5nbGVbQ2hsQTYkRmxvdy5yYXRlPT0iMC42Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNiIpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTYkdHVybi5hbmdsZVtDaGxBNiRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNiR0dXJuLmFuZ2xlW0NobEE2JEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTYkdHVybi5hbmdsZVtDaGxBNiRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTckdHVybi5hbmdsZVtDaGxBNyRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNyIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTckdHVybi5hbmdsZVtDaGxBNyRGbG93LnJhdGU9PSIwLjYiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEE3JHR1cm4uYW5nbGVbQ2hsQTckRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSIwIl0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxMyIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSIwLjYiXSkNCnBsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxMyIpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTEzJHR1cm4uYW5nbGVbQ2hsQTEzJEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTE5JHR1cm4uYW5nbGVbQ2hsQTE5JEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTE5JHR1cm4uYW5nbGVbQ2hsQTE5JEZsb3cucmF0ZT09IjAuNiJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KENobEExOSR0dXJuLmFuZ2xlW0NobEExOSRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkRmxvdy5yYXRlPT0iOC45Il0pDQojI2xpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIExpZ2h0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMykpDQoNCmtkMSA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDI1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTQuMyR0dXJuLmFuZ2xlW0NobEE0LjMkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDI1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNC4zIikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBNC4zJHR1cm4uYW5nbGVbQ2hsQTQuMyRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE0LjYkdHVybi5hbmdsZVtDaGxBNC42JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDQuNiIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTQuNiR0dXJuLmFuZ2xlW0NobEE0LjYkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMjUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSA1LjUiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE1LjUkdHVybi5hbmdsZVtDaGxBNS41JExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNiR0dXJuLmFuZ2xlW0NobEE2JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDYiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE2JHR1cm4uYW5nbGVbQ2hsQTYkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDciKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTEzJHR1cm4uYW5nbGVbQ2hsQTEzJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDEzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBMTMkdHVybi5hbmdsZVtDaGxBMTMkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDI1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMTkiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KRm9yIGVhY2ggbGV2ZWwgb2YgRmxvdyAobm93IGZvciB2ZWxvY2l0eSkNCg0KYGBge3J9DQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyBWZWxvY2l0eQ0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMikpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjAiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDAiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGxvZzEwKGYwJHZlbC5mbG93W2YwJENobG9yb3BoeWxsPT0iNC4zIl0pKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjQuNiJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q4IDwtIGRlbnNpdHkobG9nMTAoZjAkdmVsLmZsb3dbZjAkQ2hsb3JvcGh5bGw9PSI1LjUiXSkpDQpsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkobG9nMTAoZjAkdmVsLmZsb3dbZjAkQ2hsb3JvcGh5bGw9PSI2LjEiXSkpDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAoZjAkdmVsLmZsb3dbZjAkQ2hsb3JvcGh5bGw9PSI3LjYiXSkpDQpsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkobG9nMTAoZjAkdmVsLmZsb3dbZjAkQ2hsb3JvcGh5bGw9PSIxMy41Il0pKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjE5Il0pKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcHBoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JENobG9yb3BoeWxsPT0iMCJdKSkNCnBsb3Qoa2QxLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4xMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIENobG9yb3BoeWxsLCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoZi42JHZlbC5mbG93W2YuNiRDaGxvcm9waHlsbD09IjQuMyJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKGYuNiR2ZWwuZmxvd1tmLjYkQ2hsb3JvcGh5bGw9PSI0LjYiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkobG9nMTAoZi42JHZlbC5mbG93W2YuNiRDaGxvcm9waHlsbD09IjUuNSJdKSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JENobG9yb3BoeWxsPT0iNi4xIl0pKQ0KbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGxvZzEwKGYuNiR2ZWwuZmxvd1tmLjYkQ2hsb3JvcGh5bGw9PSI3LjYiXSkpDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQprZDYgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JENobG9yb3BoeWxsPT0iMTMuNSJdKSkNCmxpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JENobG9yb3BoeWxsPT0iMTkiXSkpDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkQ2hsb3JvcGh5bGw9PSIwIl0pKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSAzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjQuMyJdKSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjQuNiJdKSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGxvZzEwKGYzJHZlbC5mbG93W2YzJENobG9yb3BoeWxsPT0iNS41Il0pKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkQ2hsb3JvcGh5bGw9PSI2LjEiXSkpDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjcuNiJdKSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkQ2hsb3JvcGh5bGw9PSIxMy41Il0pKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkQ2hsb3JvcGh5bGw9PSIxOSJdKSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChmNSR2ZWwuZmxvd1tmNSRDaGxvcm9waHlsbD09IjAiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDUuOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkQ2hsb3JvcGh5bGw9PSI0LjMiXSkpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkQ2hsb3JvcGh5bGw9PSI0LjYiXSkpDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShsb2cxMChmNSR2ZWwuZmxvd1tmNSRDaGxvcm9waHlsbD09IjUuNSJdKSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JENobG9yb3BoeWxsPT0iNi4xIl0pKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkQ2hsb3JvcGh5bGw9PSI3LjYiXSkpDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JENobG9yb3BoeWxsPT0iMTMuNSJdKSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JENobG9yb3BoeWxsPT0iMTkiXSkpDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkQ2hsb3JvcGh5bGw9PSIwIl0pKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSA4LjkiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JENobG9yb3BoeWxsPT0iNC4zIl0pKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JENobG9yb3BoeWxsPT0iNC42Il0pKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkQ2hsb3JvcGh5bGw9PSI1LjUiXSkpDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShsb2cxMChmOCR2ZWwuZmxvd1tmOCRDaGxvcm9waHlsbD09IjYuMSJdKSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JENobG9yb3BoeWxsPT0iNy42Il0pKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShsb2cxMChmOCR2ZWwuZmxvd1tmOCRDaGxvcm9waHlsbD09IjEzLjUiXSkpDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShsb2cxMChmOCR2ZWwuZmxvd1tmOCRDaGxvcm9waHlsbD09IjE5Il0pKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMikpDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEd1YW5vKQ0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRHdWFubz09IlByZXNlbnQiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMDQpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBHdWFubywgRmxvdyA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRHdWFubz09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMja2QxIDwtIGRlbnNpdHkobG9nMTAoZi42JHZlbC5mbG93W2YuNiRHdWFubz09IlByZXNlbnQiXSkpDQojI3Bsb3Qoa2QxLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4xMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEd1YW5vLCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoZi42JHZlbC5mbG93W2YuNiRHdWFubz09IkFic2VudCJdKSkNCnBsb3Qoa2QyLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4wNCksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSAwLjYiKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojI2tkMSA8LSBkZW5zaXR5KGxvZzEwKGYzJHZlbC5mbG93W2YzJEd1YW5vPT0iUHJlc2VudCJdKSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSAzIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkR3Vhbm89PSJBYnNlbnQiXSkpDQpwbG90KGtkMiwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMDQpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEd1YW5vLCBGbG93ID0gMyIpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojI2tkMSA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JEd1YW5vPT0iUHJlc2VudCJdKSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSA1LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChmNSR2ZWwuZmxvd1tmNSRHdWFubz09IkFic2VudCJdKSkNCnBsb3Qoa2QyLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4wNCksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSA1LjkiKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojI2tkMSA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JEd1YW5vPT0iUHJlc2VudCJdKSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKC0xMDAsMTAwKSwgeWxpbSA9IGMoMCwgMC4wNCksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEd1YW5vLCBGbG93ID0gOC45IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkR3Vhbm89PSJBYnNlbnQiXSkpDQpwbG90KGtkMiwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMDQpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEd1YW5vLCBGbG93ID0gOC45IikNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQpgYGANCg0KDQoNCg0KDQoNCg0KDQoNCg0KRm9yIGVhY2ggbGV2ZWwgb2YgQ2hsb3JvcGh5bGwgKHZlbG9jaXR5KQ0KDQpgYGB7cn0NCg0KIyMjIEtlcm5lbCBkZW5zaXR5IHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMgdmVsb2NpdHkNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDMpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGbG93IFJhdGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBMCR2ZWwuZmxvd1tDaGxBMCRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAwIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTAkdmVsLmZsb3dbQ2hsQTAkRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTAkdmVsLmZsb3dbQ2hsQTAkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTAkdmVsLmZsb3dbQ2hsQTAkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBMCR2ZWwuZmxvd1tDaGxBMCRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuMyR2ZWwuZmxvd1tDaGxBNC4zJEZsb3cucmF0ZT09IjAiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDQuMyIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjMkdmVsLmZsb3dbQ2hsQTQuMyRGbG93LnJhdGU9PSIwLjYiXSkpDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChDaGxBNC4zJHZlbC5mbG93W0NobEE0LjMkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuMyR2ZWwuZmxvd1tDaGxBNC4zJEZsb3cucmF0ZT09IjUuOSJdKSkNCmxpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuMyR2ZWwuZmxvd1tDaGxBNC4zJEZsb3cucmF0ZT09IjguOSJdKSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjYkdmVsLmZsb3dbQ2hsQTQuNiRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA0LjYiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBNC42JHZlbC5mbG93W0NobEE0LjYkRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuNiR2ZWwuZmxvd1tDaGxBNC42JEZsb3cucmF0ZT09IjMiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjYkdmVsLmZsb3dbQ2hsQTQuNiRGbG93LnJhdGU9PSI1LjkiXSkpDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjYkdmVsLmZsb3dbQ2hsQTQuNiRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNS41JHZlbC5mbG93W0NobEE1LjUkRmxvdy5yYXRlPT0iMCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNS41IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTUuNSR2ZWwuZmxvd1tDaGxBNS41JEZsb3cucmF0ZT09IjAuNiJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKENobEE0NS41JHZlbC5mbG93W0NobEE1LjUkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsNS41JHZlbC5mbG93W0NobEE1LjUkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBNS41JHZlbC5mbG93W0NobEE1LjUkRmxvdy5yYXRlPT0iOC45Il0pKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTYkdmVsLmZsb3dbQ2hsQTYkRmxvdy5yYXRlPT0iMCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE2JHZlbC5mbG93W0NobEE2JEZsb3cucmF0ZT09IjAuNiJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKENobEE2JHZlbC5mbG93W0NobEE2JEZsb3cucmF0ZT09IjMiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGxvZzEwKENobEE2JHZlbC5mbG93W0NobEE2JEZsb3cucmF0ZT09IjUuOSJdKSkNCmxpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTYkdmVsLmZsb3dbQ2hsQTYkRmxvdy5yYXRlPT0iOC45Il0pKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTckdmVsLmZsb3dbQ2hsQTckRmxvdy5yYXRlPT0iMCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNyIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE3JHZlbC5mbG93W0NobEE3JEZsb3cucmF0ZT09IjAuNiJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKENobEE3JHZlbC5mbG93W0NobEE3JEZsb3cucmF0ZT09IjMiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGxvZzEwKENobEE3JHZlbC5mbG93W0NobEE3JEZsb3cucmF0ZT09IjUuOSJdKSkNCmxpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTckdmVsLmZsb3dbQ2hsQTckRmxvdy5yYXRlPT0iOC45Il0pKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTEzJHZlbC5mbG93W0NobEExMyRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxMyIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEExMyR2ZWwuZmxvd1tDaGxBMTMkRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTEzJHZlbC5mbG93W0NobEExMyRGbG93LnJhdGU9PSIzIl0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChDaGxBMTMkdmVsLmZsb3dbQ2hsQTEzJEZsb3cucmF0ZT09IjUuOSJdKSkNCmxpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTEzJHZlbC5mbG93W0NobEExMyRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBMTkkdmVsLmZsb3dbQ2hsQTE5JEZsb3cucmF0ZT09IjAiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDE5IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTE5JHZlbC5mbG93W0NobEExOSRGbG93LnJhdGU9PSIwLjYiXSkpDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChDaGxBMTkkdmVsLmZsb3dbQ2hsQTE5JEZsb3cucmF0ZT09IjMiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGxvZzEwKENobEExOSR2ZWwuZmxvd1tDaGxBMTkkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBMTkkdmVsLmZsb3dbQ2hsQTE5JEZsb3cucmF0ZT09IjguOSJdKSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIExpZ2h0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMykpDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEEwJHZlbC5mbG93W0NobEEwJExpZ2h0PT0iUHJlc2VudCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSAwIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTAkdmVsLmZsb3dbQ2hsQTAkTGlnaHQ9PSJBYnNlbnQiXSkpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjMkdmVsLmZsb3dbQ2hsQTQuMyRMaWdodD09IlByZXNlbnQiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNC4zIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuMyR2ZWwuZmxvd1tDaGxBNC4zJExpZ2h0PT0iQWJzZW50Il0pKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNC42JHZlbC5mbG93W0NobEE0LjYkTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDQuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjYkdmVsLmZsb3dbQ2hsQTQuNiRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTUuNSR2ZWwuZmxvd1tDaGxBNS41JExpZ2h0PT0iUHJlc2VudCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSA1LjUiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBNS41JHZlbC5mbG93W0NobEE1LjUkTGlnaHQ9PSJBYnNlbnQiXSkpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTYkdmVsLmZsb3dbQ2hsQTYkTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDYiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBNiR2ZWwuZmxvd1tDaGxBNiRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTckdmVsLmZsb3dbQ2hsQTckTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDciKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBNyR2ZWwuZmxvd1tDaGxBNyRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBMTMkdmVsLmZsb3dbQ2hsQTEzJExpZ2h0PT0iUHJlc2VudCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSAxMyIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEExMyR2ZWwuZmxvd1tDaGxBMTMkTGlnaHQ9PSJBYnNlbnQiXSkpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEExOSR2ZWwuZmxvd1tDaGxBMTkkTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDE5IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTE5JHZlbC5mbG93W0NobEExOSRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KcmFuZ2UoQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGUpDQpgYGANCg0KDQoNCg0KTm93IGZvciBlYWNoIGxldmVsIG9mIEZsb3cgKGZvciBoZWFkaW5ncykNCg0KYGBge3J9DQoNCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIEhlYWRpbmdzDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ2hsb3JvcGh5bGwgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsKQ0KDQprZDEgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gMCIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjAkaGVhZGluZy5waVtmMCRDaGxvcm9waHlsbD09IjQuMyJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iNC42Il0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkOCA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCmxpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iNi4xIl0pDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkoZjAkaGVhZGluZy5waVtmMCRDaGxvcm9waHlsbD09IjcuNiJdKQ0KbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkoZjAkaGVhZGluZy5waVtmMCRDaGxvcm9waHlsbD09IjEzLjUiXSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iMTkiXSkNCmxpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSAwLjYiKQ0KDQprZDIgPC0gZGVuc2l0eShmLjYkaGVhZGluZy5waVtmLjYkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRDaGxvcm9waHlsbD09IjQuNiJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRDaGxvcm9waHlsbD09IjUuNSJdKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRDaGxvcm9waHlsbD09IjYuMSJdKQ0KbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRDaGxvcm9waHlsbD09IjcuNiJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRDaGxvcm9waHlsbD09IjE5Il0pDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSx4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDMiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJENobG9yb3BoeWxsPT0iNC42Il0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJENobG9yb3BoeWxsPT0iNS41Il0pDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJENobG9yb3BoeWxsPT0iNi4xIl0pDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJENobG9yb3BoeWxsPT0iNy42Il0pDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJENobG9yb3BoeWxsPT0iMTkiXSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hscm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSx4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDUuOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjQuMyJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjEzLjUiXSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0Ka2QxIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDguOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjQuMyJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KGY4JGhlYWRpbmcucGlbZjgkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGY4JGhlYWRpbmcucGlbZjgkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGY4JGhlYWRpbmcucGlbZjgkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGY4JGhlYWRpbmcucGlbZjgkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjEzLjUiXSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGY4JGhlYWRpbmcucGlbZjgkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEd1YW5vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkR3Vhbm89PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgR3Vhbm8sIEZsb3cgPSAwIikNCg0Ka2QyIDwtIGRlbnNpdHkoZjAkaGVhZGluZy5waVtmMCRHdWFubz09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRHdWFubz09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBHdWFubywgRmxvdyA9IDAuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRHdWFubz09IkFic2VudCJdKQ0KIyNwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBHdWFubywgRmxvdyA9IDAuNiIpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjMkaGVhZGluZy5waVtmMyRHdWFubz09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBHdWFubywgRmxvdyA9IDMiKQ0KDQprZDIgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJEd1YW5vPT0iQWJzZW50Il0pDQojI3Bsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gMyIpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkR3Vhbm89PSJQcmVzZW50Il0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBHdWFubywgRmxvdyA9IDUuOSIpDQoNCmtkMiA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkR3Vhbm89PSJBYnNlbnQiXSkNCnBsb3Qoa2QyLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gNS45IikNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCiMja2QxIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRHdWFubz09IlByZXNlbnQiXSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gOC45IikNCg0Ka2QyIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRHdWFubz09IkFic2VudCJdKQ0KcGxvdChrZDIsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMSksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgR3Vhbm8sIEZsb3cgPSA4LjkiKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTGlnaHQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMikpDQpsZXZlbHMoQ0MuVG90YWxEYXRhJExpZ2h0KQ0KDQprZDEgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgRmxvdyA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgRmxvdyA9IDAuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBGbG93ID0gMyIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjMkaGVhZGluZy5waVtmMyRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDE1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIEZsb3cgPSA1LjkiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGY1JGhlYWRpbmcucGlbZjUkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGY4JGhlYWRpbmcucGlbZjgkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBGbG93ID0gOC45IikNCg0Ka2QyIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQpgYGANCg0KDQoNCk5vdyBmb3IgZWFjaCBsZXZlbCBvZiBDaGxvcm9waHlsbCAoZm9yIGhlYWRpbmdzKQ0KDQpgYGB7cn0NCg0KIyMjIEtlcm5lbCBkZW5zaXR5IHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMgSGVhZGluZ3MNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDMpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGbG93IFJhdGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMykpDQoNCmtkMSA8LSBkZW5zaXR5KENobEEwJGhlYWRpbmcucGlbQ2hsQTAkRmxvdy5yYXRlPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAwIikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTAkaGVhZGluZy5waVtDaGxBMCRGbG93LnJhdGU9PSIwLjYiXSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KENobEEwJGhlYWRpbmcucGlbQ2hsQTAkRmxvdy5yYXRlPT0iMyJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShDaGxBMCRoZWFkaW5nLnBpW0NobEEwJEZsb3cucmF0ZT09IjUuOSJdKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShDaGxBMCRoZWFkaW5nLnBpW0NobEEwJEZsb3cucmF0ZT09IjguOSJdKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KENobEE0LjMkaGVhZGluZy5waVtDaGxBNC4zJEZsb3cucmF0ZT09IjAiXSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDQuMyIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEE0LjMkaGVhZGluZy5waVtDaGxBNC4zJEZsb3cucmF0ZT09IjAuNiJdKQ0KcGxvdChrZDIsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA0LjMiKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KENobEE0LjMkaGVhZGluZy5waVtDaGxBNC4zJEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEE0LjMkaGVhZGluZy5waVtDaGxBNC4zJEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTQuMyRoZWFkaW5nLnBpW0NobEE0LjMkRmxvdy5yYXRlPT0iOC45Il0pDQojI2xpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE0LjYkaGVhZGluZy5waVtDaGxBNC42JEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTQuNiRoZWFkaW5nLnBpW0NobEE0LjYkRmxvdy5yYXRlPT0iMC42Il0pDQojI3Bsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA0LjYiKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNC42JGhlYWRpbmcucGlbQ2hsQTQuNiRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNC42JGhlYWRpbmcucGlbQ2hsQTQuNiRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE0LjYkaGVhZGluZy5waVtDaGxBNC42JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNS41JGhlYWRpbmcucGlbQ2hsQTUuNSRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDUuNSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTUuNSRoZWFkaW5nLnBpW0NobEE1LjUkRmxvdy5yYXRlPT0iMC42Il0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTUuNSRoZWFkaW5nLnBpW0NobEE1LjUkRmxvdy5yYXRlPT0iMyJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoQ2hsQTUuNSRoZWFkaW5nLnBpW0NobEE1LjUkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBNS41JGhlYWRpbmcucGlbQ2hsQTUuNSRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KIyNrZDEgPC0gZGVuc2l0eShDaGxBNiRoZWFkaW5nLnBpW0NobEE2JEZsb3cucmF0ZT09IjAiXSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDYiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBNiRoZWFkaW5nLnBpW0NobEE2JEZsb3cucmF0ZT09IjAuNiJdKQ0KcGxvdChrZDIsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA2IikNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNiRoZWFkaW5nLnBpW0NobEE2JEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEE2JGhlYWRpbmcucGlbQ2hsQTYkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBNiRoZWFkaW5nLnBpW0NobEE2JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNyRoZWFkaW5nLnBpW0NobEE3JEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNyIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTckaGVhZGluZy5waVtDaGxBNyRGbG93LnJhdGU9PSIwLjYiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNyRoZWFkaW5nLnBpW0NobEE3JEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEE3JGhlYWRpbmcucGlbQ2hsQTckRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBNyRoZWFkaW5nLnBpW0NobEE3JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KENobEExMyRoZWFkaW5nLnBpW0NobEExMyRGbG93LnJhdGU9PSIwIl0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxMyIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEExMyRoZWFkaW5nLnBpW0NobEExMyRGbG93LnJhdGU9PSIwLjYiXSkNCnBsb3Qoa2QyLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gMTMiKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KENobEExMyRoZWFkaW5nLnBpW0NobEExMyRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkRmxvdy5yYXRlPT0iOC45Il0pDQojI2xpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEExOSRoZWFkaW5nLnBpW0NobEExOSRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDE5IikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBMTkkaGVhZGluZy5waVtDaGxBMTkkRmxvdy5yYXRlPT0iMC42Il0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTE5JGhlYWRpbmcucGlbQ2hsQTE5JEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEExOSRoZWFkaW5nLnBpW0NobEExOSRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEExOSRoZWFkaW5nLnBpW0NobEExOSRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgTGlnaHQgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywzKSkNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTAkaGVhZGluZy5waVtDaGxBMCRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSAwIikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTAkaGVhZGluZy5waVtDaGxBMCRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNC4zJGhlYWRpbmcucGlbQ2hsQTQuMyRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSA0LjMiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE0LjMkaGVhZGluZy5waVtDaGxBNC4zJExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTQuNiRoZWFkaW5nLnBpW0NobEE0LjYkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNC42IikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBNC42JGhlYWRpbmcucGlbQ2hsQTQuNiRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE1LjUkaGVhZGluZy5waVtDaGxBNS41JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDUuNSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTUuNSRoZWFkaW5nLnBpW0NobEE1LjUkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE2JGhlYWRpbmcucGlbQ2hsQTYkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNiIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTYkaGVhZGluZy5waVtDaGxBNiRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE3JGhlYWRpbmcucGlbQ2hsQTckTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNyIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEE3JGhlYWRpbmcucGlbQ2hsQTckTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMTMiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEExMyRoZWFkaW5nLnBpW0NobEExMyRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEExOSRoZWFkaW5nLnBpW0NobEExOSRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSAxOSIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEExOSRoZWFkaW5nLnBpW0NobEExOSRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KYGBgDQoNCg==